The Internet and World Wide Web (“Web”) have grown rapidly into an essential backbone for business communications. The Internet, however, is a public and open network that offers no inherent protection to data communication. Yet, today's business environment (as well as others) demand manageable and secure data communication over such public networks.
Many organizations are now using the Internet as a data transmission medium between different proprietary networks. To enable this communication over an otherwise public network, data is commonly encrypted into a protected form. This affords essentially the same protection and security as a private network, while benefiting from the flexibility and lower costs offered by the Internet. To this end, the concept of a virtual private network (VPN) has been developed.
A virtual private network provides a secure, authenticated mechanism for communicating between two endpoints, such as between two networks. The VPN establishes an encrypted data flow between the two endpoints. Since there is not an actual private network connection in place, and the data is actually being routed over the Internet, this data flow can be thought of as a “tunnel” through the Internet. Data conceptually enters the tunnel at one end and emerges, secure and unchanged, at the other end.
To ensure that the transmission is secure, the data must be protected from unauthorized access during transmission over the Internet. Consider how a malicious party could access this data. A malicious party could read and record the data, or modify it in some way, or even replace the valid data with different data. The source of the data could be disguised by changing the electronic source address of the Internet Protocol (IP) header in the data stream.
Data transmitted via a VPN is therefore encrypted to prevent any inspection or modification. Various protocols exist that provide security and authentication features for VPNs. Point-to-Point Tunneling Protocol (PPTP) and the Internet Engineering Task Force's IPSEC specification are the two most common VPN protocols.
Point-to-point tunneling protocol (PPTP) is a network protocol that enables the secure transfer of data from a remote client to a private enterprise server by creating a virtual private network across TCP/IP-based data networks. PPTP supports on-demand, multi-protocol, and virtual private networking over public networks such as the Internet. The networking technology of PPTP is an extension of the remote access point-to-point protocol defined in the document by the Internet Engineering Task Force (IETF) titled “The Point-to-Point Protocol for the Transmission of Multi-Protocol Datagrams over Point-to-Point Links,” referred to as RFC 1171. PPTP is a network protocol that encapsulates PPP packets into IP datagrams for transmission over the Internet or other public TCP/IP-based networks. PPTP can also be used in private LAN-to-LAN networking.
IP Security (IPSEC) is a network protocol designed by the Internet Engineering Task Force (IETF) for the Internet Protocol that supports network-level authentication, data integrity, and encryption. Encryption is encoded via a shared secret key, typically generated by the Diffie-Hellman Key Agreement algorithm. IP Security uses an Authentication Header (AH) and an Encapsulated Security Payload (ESP). The authentication header provides data communication with source authentication and integrity. The encapsulated security payload provides confidentiality in addition to authentication and integrity. With IP security, only the sender and recipient know the security key. If the authentication data is valid, the recipient knows that the communication came from the sender, and that it was not changed in transit.
The data payload in packets transmitted over a VPN is encrypted. The routing information, such as the source and destination addresses, is left unencrypted to enable routing through the network. However, it is possible to secure the routing components by calculating a value, such as a checksum, based on the contents of the address fields and then encrypt the checksum along with the data payload.
FIG. 1 shows one example of encrypting a data packet according to IPSEC. A data packet 20 comprises a data payload 22 and routing header 24 that contains addressing information. A hashing unit 26 cryptographically hashes the entire packet, including the routing header, using a hashing algorithm (e.g., MD4, MD5) and a resultant hash value (HV) 28 is appended to the packet. An encrypting unit 30 then encrypts the data payload 22 and appended hash value 28. The unencrypted routing header is appended to the encrypted portion 32 and the packet is sent out.
The destination receives the packets and decrypts the encrypted portion 32. It then recalculates the hash value from the decrypted data payload and the routing header. If a malicious user were to attempt to rewrite any of the unencrypted data, the hash value calculated by the receiver would not match the accompanying hash value 28, and the unauthorized modification would be detected.
A drawback in these VPN protocols is that the encryption mechanisms prevent all data stream inspection, even inspection for legitimate purposes. There are situations when a party would like to access and inspect the encrypted data before it reaches its final destination. For example, a network access point such as a firewall or proxy server may want to perform virus scanning or implement policy based access controls. The firewall might like to strip off one address (say a general address to a company that is given out publicly) and replace it with internal addresses used behind the firewall. However, since the original address is used to create the encrypted payload, it cannot be later stripped away and replaced with another address without detrimentally hindering the destination's ability to restore the original packet. The only way to engage in legitimate inspection is to have access to the unencrypted data stream, which is counter to the basic design of a virtual private network.
Accordingly, there is a need for a secure mechanism that allows a trusted computer system to function as a trusted man-in-the-middle and have access to the unencrypted version of the data flowing through a virtual private network.